package com.yonyou.cyxdms.basedata.service.dto;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.yonyou.cyx.function.utils.jsonserializer.localdatetime.JsonLocalDateTimeDeserializer;
import com.yonyou.cyx.function.utils.jsonserializer.localdatetime.JsonLocalDateTimeSerializer;
import com.yonyou.cyxdms.framework.bean.dto.base.DMSBaseDTO;

import java.io.Serializable;
import java.time.LocalDateTime;


/**
 * <p>
 * 定义车辆产品，一个车辆产品表示一类车辆，车辆产品定义即可以由车厂下发，也可以自定义
 * </p>
 *
 * @author renwd
 * @since 2019-01-18
 */

public class VsProductDTO extends DMSBaseDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 整车产品_ID
     */
    private Integer productId;
    /**
     * 经销商代码
     */
    private String dealerCode;
    /**
     * 产品代码
     */
    private String productCode;
    /**
     * 产品名称
     */
    private String productName;
    /**
     * 数据来源
     */
    private Integer dataSources;
    /**
     * 配置_ID
     */
    private Integer packageId;
    /**
     * 颜色
     */
    private String color;
    /**
     * 正常库存车、促销车、展车、改装车
     */
    private Integer productType;
    /**
     * 正常，退市
     */
    private Integer productStatus;
    /**
     * 是，否
     */
    private Integer isValid;
    /**
     * 车厂指导价
     */
    private Double oemDirectivePrice;

    /**
     * 采购单价
     */
    private Double purchasePrice;

    /**
     * 销售指导价
     */
    private Double directivePrice;
    /**
     * 上市日期
     */
    @JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeSerializer.class)
    private LocalDateTime enterDate;
    /**
     * 退市日期
     */
    @JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeSerializer.class)
    private LocalDateTime exeuntDate;
    /**
     * 备注
     */
    private String remark;
    /**
     * 车辆来源：国产车、进口车、平行进口车
     */
    private Integer vehicleSources;
    private Integer organizationId;
    private Integer sourceId;
    @JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeSerializer.class)
    private LocalDateTime sourceChangedAt;
    /**
     * 配置_ID
     */
    private Integer modelId;
    /**
     * 配置_ID
     */
    private Integer brandId;
    private Integer seriesId;
    private String interiorColor;

    public VsProductDTO() {
        super();
    }


    public Integer getProductId() {
        return productId;
    }


    public void setProductId(Integer productId) {
        this.productId = productId;
    }


    public String getDealerCode() {
        return dealerCode;
    }


    public void setDealerCode(String dealerCode) {
        this.dealerCode = dealerCode;
    }


    public String getProductCode() {
        return productCode;
    }


    public void setProductCode(String productCode) {
        this.productCode = productCode;
    }


    public String getProductName() {
        return productName;
    }


    public void setProductName(String productName) {
        this.productName = productName;
    }


    public Integer getDataSources() {
        return dataSources;
    }


    public void setDataSources(Integer dataSources) {
        this.dataSources = dataSources;
    }


    public Integer getPackageId() {
        return packageId;
    }


    public void setPackageId(Integer packageId) {
        this.packageId = packageId;
    }


    public String getColor() {
        return color;
    }


    public void setColor(String color) {
        this.color = color;
    }


    public Integer getProductType() {
        return productType;
    }


    public void setProductType(Integer productType) {
        this.productType = productType;
    }


    public Integer getProductStatus() {
        return productStatus;
    }


    public void setProductStatus(Integer productStatus) {
        this.productStatus = productStatus;
    }


    public Integer getIsValid() {
        return isValid;
    }


    public void setIsValid(Integer isValid) {
        this.isValid = isValid;
    }


    public Double getOemDirectivePrice() {
        return oemDirectivePrice;
    }


    public void setOemDirectivePrice(Double oemDirectivePrice) {
        this.oemDirectivePrice = oemDirectivePrice;
    }


    public Double getDirectivePrice() {
        return directivePrice;
    }


    public void setDirectivePrice(Double directivePrice) {
        this.directivePrice = directivePrice;
    }


    public LocalDateTime getEnterDate() {
        return enterDate;
    }


    public void setEnterDate(LocalDateTime enterDate) {
        this.enterDate = enterDate;
    }


    public LocalDateTime getExeuntDate() {
        return exeuntDate;
    }


    public void setExeuntDate(LocalDateTime exeuntDate) {
        this.exeuntDate = exeuntDate;
    }


    public String getRemark() {
        return remark;
    }


    public void setRemark(String remark) {
        this.remark = remark;
    }


    public Integer getVehicleSources() {
        return vehicleSources;
    }


    public void setVehicleSources(Integer vehicleSources) {
        this.vehicleSources = vehicleSources;
    }


    public Integer getOrganizationId() {
        return organizationId;
    }


    public void setOrganizationId(Integer organizationId) {
        this.organizationId = organizationId;
    }


    public Integer getSourceId() {
        return sourceId;
    }


    public void setSourceId(Integer sourceId) {
        this.sourceId = sourceId;
    }


    public LocalDateTime getSourceChangedAt() {
        return sourceChangedAt;
    }


    public void setSourceChangedAt(LocalDateTime sourceChangedAt) {
        this.sourceChangedAt = sourceChangedAt;
    }


    public Integer getModelId() {
        return modelId;
    }


    public void setModelId(Integer modelId) {
        this.modelId = modelId;
    }


    public Integer getBrandId() {
        return brandId;
    }


    public void setBrandId(Integer brandId) {
        this.brandId = brandId;
    }


    public Integer getSeriesId() {
        return seriesId;
    }


    public void setSeriesId(Integer seriesId) {
        this.seriesId = seriesId;
    }


    public String getInteriorColor() {
        return interiorColor;
    }


    public void setInteriorColor(String interiorColor) {
        this.interiorColor = interiorColor;
    }

    public Double getPurchasePrice() {
        return purchasePrice;
    }

    public void setPurchasePrice(Double purchasePrice) {
        this.purchasePrice = purchasePrice;
    }

    @Override
    public String toString() {
        return "VsProductDTO{" +
                "productId=" + productId +
                ", dealerCode=" + dealerCode +
                ", productCode=" + productCode +
                ", productName=" + productName +
                ", dataSources=" + dataSources +
                ", purchasePrice=" + purchasePrice +
                ", packageId=" + packageId +
                ", color=" + color +
                ", productType=" + productType +
                ", productStatus=" + productStatus +
                ", isValid=" + isValid +
                ", oemDirectivePrice=" + oemDirectivePrice +
                ", directivePrice=" + directivePrice +
                ", enterDate=" + enterDate +
                ", exeuntDate=" + exeuntDate +
                ", remark=" + remark +
                ", vehicleSources=" + vehicleSources +
                ", organizationId=" + organizationId +
                ", sourceId=" + sourceId +
                ", sourceChangedAt=" + sourceChangedAt +
                ", modelId=" + modelId +
                ", brandId=" + brandId +
                ", seriesId=" + seriesId +
                ", interiorColor=" + interiorColor +
                "}";
    }

}
